button: Claim click events
authorMatthias Clasen <mclasen@redhat.com>
Mon, 10 Aug 2020 02:58:22 +0000 (22:58 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 10 Aug 2020 02:58:22 +0000 (22:58 -0400)
This fixes issues with double activation on clicks.

Fixes: #3054
gtk/gtkbutton.c

index eac1499b0d812d4635db7b18afd4ded634f44b04..c242b28c64c93c7de020204b6ae4a1acd0595ab4 100644 (file)
@@ -319,12 +319,16 @@ click_pressed_cb (GtkGestureClick *gesture,
 {
   GtkButton *button = GTK_BUTTON (widget);
   GtkButtonPrivate *priv = gtk_button_get_instance_private (button);
+  GdkEventSequence *sequence;
 
   if (gtk_widget_get_focus_on_click (widget) && !gtk_widget_has_focus (widget))
     gtk_widget_grab_focus (widget);
 
   priv->in_button = TRUE;
 
+  sequence = gtk_gesture_single_get_current_sequence (GTK_GESTURE_SINGLE (gesture));
+  gtk_gesture_set_sequence_state (GTK_GESTURE (gesture), sequence, GTK_EVENT_SEQUENCE_CLAIMED);
+
   if (!priv->activate_timeout)
     priv->button_down = TRUE;
 }